const DELIMITTER_DATE = '-';
const DELIMITTER_TIME = ':';

const formatNumber = (n) => {
  const s = n.toString()
  return s[1] ? s : '0' + s
}

const formatDateTimeDo = (date) => {
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    const hour = date.getHours()
    const minute = date.getMinutes()
    const second = date.getSeconds()
  
    return (
      [year, month, day].map(formatNumber).join(DELIMITTER_DATE) +
      ' ' +
      [hour, minute, second].map(formatNumber).join(DELIMITTER_TIME)
    )
  }
  const formatDateTime = (date, format) => {
    if(format === undefined || format === null) return formatDateTimeDo(date);
    const o = {
      "M+": date.getMonth() + 1, // 月份
      "d+": date.getDate(), // 日
      "h+": date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 小时
      "H+": date.getHours(), // 小时
      "m+": date.getMinutes(), // 分
      "s+": date.getSeconds(), // 秒
      "q+": Math.floor((date.getMonth() + 3) / 3), // 季度
      S: date.getMilliseconds(), // 毫秒
      a: date.getHours() < 12 ? "上午" : "下午", // 上午/下午
      A: date.getHours() < 12 ? "AM" : "PM", // AM/PM
    };
    if (/(y+)/.test(format)) {
      format = format.replace(
        RegExp.$1,
        (date.getFullYear() + "").substr(4 - RegExp.$1.length)
      );
    }
    for (let k in o) {
      if (new RegExp("(" + k + ")").test(format)) {
        format = format.replace(
          RegExp.$1,
          RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
        );
      }
    }
    return format;
  }
  
export { formatDateTime }